# Define rule name and log file path
$RuleName = "FileWave Client 15.5+"
$LogFile = "$env:windir\Temp\FileWaveFirewallCleanup.log"

# Function to log messages to both the console and log file
function Log-Message {
    param (
        [string]$Message
    )
    $Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $LogEntry = "$Timestamp - $Message"
    Write-Output $LogEntry
    Add-Content -Path $LogFile -Value $LogEntry
}

# Start of the cleanup script
Log-Message "Starting cleanup of FileWave Client firewall rules..."

# Function to remove firewall rules
function Remove-FirewallRule {
    Log-Message "Attempting to remove firewall rule '$RuleName'..."

    # Remove inbound rule
    Log-Message "Removing inbound rule..."
    netsh advfirewall firewall delete rule name="$RuleName" dir=in | Out-Null

    if ($?) {
        Log-Message "Inbound rule removed successfully."
    } else {
        Log-Message "Error: Failed to remove inbound rule or it does not exist."
    }

    # Remove outbound rule
    Log-Message "Removing outbound rule..."
    netsh advfirewall firewall delete rule name="$RuleName" dir=out | Out-Null

    if ($?) {
        Log-Message "Outbound rule removed successfully."
    } else {
        Log-Message "Error: Failed to remove outbound rule or it does not exist."
    }
}

# Execute the removal function
Remove-FirewallRule

Log-Message "Firewall rule cleanup script completed."